package com.zj.eswrapper.interfaces;


import java.util.function.Consumer;

/**
 * es聚合条件子聚合拼接器接口
 *
 * @author 19242
 */
public interface IEsAggNestWrapper<AggWrapper> {
    /**
     * 子聚合
     * v.agg(a -> ...).agg(b -> ...) 和 v.agg(a -> a.agg(b -> ...))
     * 前者a和b是平级，后者b是a的子嵌套
     *
     * @param consumer 函数
     * @return 聚合完毕的返回的对象
     */
    IEsAggNestWrapper<AggWrapper> agg(Consumer<AggWrapper> consumer);

    /**
     * 添加子聚合
     *
     * @param child AggWrapper
     * @return 聚合完毕的返回的对象
     */
    IEsAggNestWrapper<AggWrapper> agg(AggWrapper child);
}
